💡 AI 인사이트

🤖 AI가 여기에 결과를 출력합니다...

댓글 커뮤니티

쿠팡이벤트

이 포스팅은 쿠팡 파트너스 활동의 일환으로, 이에 따른 일정액의 수수료를 제공받습니다.

검색

    로딩 중이에요... 🐣

    [코담] 웹개발·실전 프로젝트·AI까지, 파이썬·장고의 모든것을 담아낸 강의와 개발 노트

    2. 배포 설정2 | ✅ 저자: 이유정(박사)

    https://aws.amazon.com/ko/

    RDS 시작하기 https://ap-northeast-2.console.aws.amazon.com/rds/home?region=ap-northeast-2

    데이터베이스 생성

    옵션엔진은 mySQL

    프리터어로 선택합니다.

    설정하기

    VPC보안그룹 생성하기

    데이터베이스

    데이터베이스 생성하기 클릭 마스터암호를 잘 보관하기


    Amaxon S3는 이미지, 파일 저장용

    Amaxon S3 : 검색창에 S3검색 후 이동 버킷만들기 클릭

    버킷 이름은 소문자로 사용해야 합니다 airest-dev로 만듭니다.

    모든 퍼블릭 엑세스 차단을 체크 해제하고 모든 퍼블릭 엑세스 차단을 비활성화하면... 그부분은 체크 합니다.

    버킷만들기 클릭

    객체 소유권 편집하기

    객체 소유권 편집

    boto3, django-storages란 무엇인가?
    패키지 역할 비고
    boto3 AWS 서비스를 Python 코드로 제어할 수 있게 해주는 AWS 공식 SDK AWS S3, EC2, RDS 등 사용 가능
    django-storages Django의 정적 파일/미디어 파일을 S3 등에 저장할 수 있게 해주는 Django용 확장 라이브러리 boto3를 내부적으로 사용함

    django-storages 공식문서에서 자세한 내용을 확인할수 있습니다. https://django-storages.readthedocs.io/en/latest/

    두 패키지를 함께 사용하면: Django에서 업로드된 이미지, 첨부파일 등을 AWS S3에 저장할 수 있게 됩니다.

    가상환경이 활성화된 상태에서

    pip install --break-system-packages boto3 django-storages
    

    pip install -r requirements.txt 이 명령어로 추가하면 너무 많은 패키지까지 포함되므로 협업시 불필요할수 있으므로 아래 내용만 적용되게 직접 후처리 합니다.

    Django==4.2.7
    djangorestframework==3.16.0
    mysqlclient==2.2.0
    pillow==11.3.0
    python-dotenv==1.1.1
    boto3==1.39.9
    django-storages==1.14.6
    

    random string generator 검색하여 장고 비밀번호 생성

    settings.py 설정하기 :

    SECRET_KEY = 'mCeJY8henHKouQElHUfrYEgqVDvCwbNDbI5JVuv6n515OXJ9bbdneVOJQ8JNMbLh'
    DEBUG = os.getenv("DEBUG", "False") == "True"
    ALLOWED_HOSTS = os.getenv("ALLOWED_HOSTS", "localhost").split(",")
    
    # HSTS 설정 (1년)
    SECURE_HSTS_SECONDS = 31536000
    SECURE_HSTS_INCLUDE_SUBDOMAINS = True
    SECURE_HSTS_PRELOAD = True
    
    # HTTPS 강제 리다이렉트
    SECURE_SSL_REDIRECT = True
    
    # 쿠키를 HTTPS 전용으로만
    SESSION_COOKIE_SECURE = True
    CSRF_COOKIE_SECURE = True
    
    
    DATABASES = {
        "default": {
            "ENGINE": "django.db.backends.mysql",
            "NAME": os.environ.get("DB_NAME", "restaurant_db"),
            "USER": os.environ.get("DB_USER", "django_user"),
            "PASSWORD": os.environ.get("DB_PASSWORD", "db_password"),
            "HOST": os.environ.get("DB_HOST", "localhost"),
            "PORT": os.environ.get("DB_PORT", "3306"),
            "OPTIONS": {"charset": "utf8mb4"},
        }
    }
    
    
    번호 경고 코드 설명 해결 방법
    1 W004 SECURE_HSTS_SECONDS 미설정HTTPS 강제 유지 기간 설정이 없음. SECURE_HSTS_SECONDS = 31536000 (1년)+ SECURE_HSTS_INCLUDE_SUBDOMAINS = True+ SECURE_HSTS_PRELOAD = True 권장
    2 W008 HTTPS 리다이렉션 설정 안됨SSL 아닌 접속도 허용 중. SECURE_SSL_REDIRECT = True
    3 W009 SECRET_KEY 보안 취약너무 짧거나 자동 생성값(django-insecure-xxx). .env 파일에 안전한 키 사용:SECRET_KEY=sl@3!t$9#x$... (50자 이상, 무작위)
    4 W012 세션 쿠키가 보안 연결(HTTPS)에서만 전송되지 않음 SESSION_COOKIE_SECURE = True
    5 W016 CSRF 토큰도 보안 연결로만 전달되지 않음 CSRF_COOKIE_SECURE = True
    6 W018 DEBUG=True 상태로 배포 중 .envDEBUG=False로 설정

    .env

    DB_NAME=restaurant_db
    DB_USER=restaurant_user
    DB_PASSWORD=DjangoUserPass!123
    DB_HOST=airest-d.cfwgaqsu2fpk.ap-north..본인 주소
    DB_PORT=3306
    # SECRET_KEY=django-insecure-!pdm2(!5b9_oa......본인장고비밀번호키
    DEBUG=True
    
    TOP
    preload preload